chore(deps): update dependency mise to v2026.8.3 - #2364
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
renovate
Bot
requested review from
dhoard,
fstab,
jaydeluca and
zeitlinger
as code owners
August 3, 2026 01:15
Contributor
Benchmark resultsBenchmark run finished with conclusion
Benchmark summary artifact was not found; see the workflow run for details. |
renovate
Bot
force-pushed
the
renovate/mise
branch
from
August 3, 2026 22:33
165fe4d to
9b24006
Compare
renovate
Bot
force-pushed
the
renovate/mise
branch
from
August 4, 2026 18:56
9b24006 to
6ff4d94
Compare
renovate
Bot
force-pushed
the
renovate/mise
branch
2 times, most recently
from
August 5, 2026 05:51
339a93b to
eff4971
Compare
renovate
Bot
force-pushed
the
renovate/mise
branch
from
August 8, 2026 00:45
eff4971 to
c00facb
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
v2026.7.5→v2026.8.3Release Notes
jdx/mise (mise)
v2026.8.3: : Flatpak, Font Casks, and Task Precedence FixesCompare Source
This release expands bootstrap package management with per-user Flatpak support and Linux font casks, adds a per-tool pipx registry option and a shim safety setting, and lands a batch of task precedence, lockfile, and Python fixes.
Added
bootstrap: manage per-user Flatpak installations with a new
flatpak-userpackage manager. The existingflatpak:<id>entries stay system-scoped, and you can now declare both scopes in the same config, including the same application ID. (#11757 by @jdx)brew: the built-in
brew-caskmanager now works on Linux for font-only casks, installing fonts under$XDG_DATA_HOME/fontsvia Linuxbrew. Non-font casks on Linux fail with a clear unsupported-platform error. (#11758 by @jdx)pipx: add a per-tool
registry_urloption so version listing andlatestresolution can target a private PyPI-style index without changing the globalpipx.registry_url. The latest-version cache is keyed by registry URL to avoid cross-registry reuse. (#11754 by @jdx)shim: add a
not_found_system_fallbacksetting (MISE_NOT_FOUND_SYSTEM_FALLBACK, defaulttrue). Setting it tofalseprevents a shim for a missing tool from silently falling back to a same-named binary onPATH, failing loudly instead — useful for hardened environments that pin an explicit allowlist of tools. (#11755 by @richid)Fixed
[tasks.<name>]definitions now take precedence over a same-named task from an included TOML file instead of being silently discarded. Metadata-only inline blocks overlay the included command rather than replacing it. (#11734 by @jdx)mise.local.tomlnow overlays the command-bearing definition from a lower file instead of wiping out itsrun. Command-bearing higher-precedence tasks still fully replace the lower one. (#11745 by @jdx)double_dash="required"again accept values passed after--, which had regressed to being rejected. (#11729 by @jdx)postinstallare now applied to explicitly requested runtime versions (e.g.mise install solidity@0.8.2) that carry registry defaults, instead of being skipped. (#11550 by @risu729)lockfile = truenow creates missing project lockfiles duringmise use,mise install, and upgrade flows. An unset setting continues to update existing lockfiles only. (#11746 by @jdx)mise locknow preserves the python-build-standalone artifact already recorded for each platform instead of churning the lockfile to the newest build. Usemise lock --bumpto advance the PBS build explicitly. (#11747 by @jdx)minimum_release_agenow use GitHub'spublished_attimestamp rather than the commitcreated_at, so a newly published release pointing at an older commit no longer bypasses the filter. Applies across Aqua, GitHub, Ubi, SPM, Pipx, and GitHub-backed core tools. (#11756 by @jdx)mise usenow keeps an already-sorted[tools]table alphabetically ordered. (#11713 by @jdx)~in thehomesetting. (#11752 by @xqm32)npm link <package-name>(and itsnpm lnalias) now triggers an auto-reshim, since it installs a package globally. (#11748 by @cheezmil)minimum_release_agewarning during shell completions. (#11727 by @beisenherz)New Contributors
Full Changelog: jdx/mise@v2026.8.2...v2026.8.3
💚 Sponsor mise
mise is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools. Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at jdx.dev. Individual and company sponsorships keep mise fast, free, and independent.
v2026.8.2: : Declarative System BootstrapCompare Source
This release turns
mise bootstrapinto a full declarative host-provisioning system: alongside packages, mise can now converge privileged files, Linux users and groups, systemd services, Docker Compose projects, and firewall rules — all with plan/apply/status workflows, secret handling, and the ability to run over SSH against remote hosts. It also makes Ruby'sruby.compile=falsea strict precompiled-only mode and lands a batch of install and lockfile fixes.Highlights
mise bootstrapgains a Terraform-style declarative model. A newmise bootstrap planpreviews changes with table or JSON output and detailed exit codes, and each resource type has its ownapply/statuscommands that converge only when something actually differs.mise bootstrap remote, including automatic detection of the target's OS/arch/libc and signature-verified download of the matching mise binary.Added
mise bootstrap planpreviews what bootstrap would change before applying, with table or--jsonoutput and optional--detailed-exitcode(0 = no changes, 2 = changes, 1 = error). Resources have stable identities, dependency graphs, and validation for duplicates, missing dependencies, and cycles. (#11669 by @jdx)[bootstrap.files]and[bootstrap.directories], with content (inline or from a source), ownership, mode, and explicitpresent/absentstate. Writes are atomic, removal is opt-in (and requiresrecursive = truefor non-empty directories), and privileged work runs through hidden helpers that never expose file content in argv or logs. (#11674 by @jdx)[bootstrap.secrets]references sensitive values through environment variables so nothing is stored in config, and managed files withtemplate = truecan render them via{{ secret(name="...") }}.mise bootstrap secrets statusreports availability without revealing values, and--prompt-secretsprompts securely for anything missing. (#11680 by @jdx)[bootstrap.users]and[bootstrap.groups], with create/update/remove, supplementary groups, home handling, and explicitstate = "absent". Accounts converge before the files that reference them, and UID/GID collisions fail closed. (#11681 by @jdx)[bootstrap.services]for running/stopped, enabled/disabled, and masked state. Managed files and directories can setnotifyto triggerreload,restart, orreload_or_restarthandlers, but only after a real file change. (#11688 by @jdx)[bootstrap.compose]for running, stopped, and absent states, with pull/build/recreate/wait policies, one-shot services, orphan/volume/image removal, and explicit dependencies. Convergence compares live container runtime and health to the rendered Compose model (Compose v2 only). (#11689 by @jdx)[bootstrap.linux.firewall]with nftables, firewalld, and UFW backends (backend = "auto"). Includes SSH-lockout protection (default-deny requires a covering allow rule orallow_lockout = true), drift detection, and preservation of undeclared rules unlessexclusiveis set. (#11694 by @jdx)mise bootstrap remote, targeting a named[bootstrap.remote.hosts]inventory or ad-hocuser@hosttargets. mise archives and stages your project, provisions a compatible mise binary on the host, runs bootstrap with forwarded flags, and cleans up staging afterward. (#11690 by @jdx)mise_bin,remote_mise, orbootstrap_command. (#11693 by @jdx)Changed
ruby.compile = falseis now a strict precompiled-only mode, matchingpython.compile. Installs error withno precompiled ruby foundinstead of silently falling back to ruby-build, and version listings (mise ls-remote ruby, fuzzy resolution) are filtered to versions that actually have a precompiled binary for your platform. Previouslyfalsewas a no-op after precompiled binaries became the default in 2026.8.0. Unset andcompile = trueare unchanged; Windows is unaffected. (#11710 by @jdx)task.auto_infer(e.g.task.auto_infer = ["node"]) instead of running whenever experimental features are enabled. Explicit mise tasks always take precedence over inferred package scripts on name and alias collisions. (#11706 by @jdx)Fixed
:any_skip_relocationbottles no longer leave unresolved@@HOMEBREW_*@@placeholders in scripts and config files. That tag now only skips binary linkage relocation while text placeholders are still replaced. (#11665 by @jdx)mise lock --bumpnow errors instead of writing an incomplete lockfile when a version bump would drop platform coverage that the previous locked version had. Best-effort skips are retained for platforms a tool never supported. (#11664 by @jdx)upload_time_iso_8601timestamp instead of the timezone-naiveupload_time, which previously made freshly released packages appear up to ~24h younger and over-gated them underminimum_release_age. (#11662 by @Guria)pacman -Qis now parsed underLC_ALL=Cso missing-package detection works in non-English locales; previously[bootstrap.packages]could bail on a translated "was not found" message. (#11673 by @rarandeyo)incompletemarkers when an external link (from uv, nvm, pyenv, nodenv, or Homebrew) is confirmed healthy, somise whereno longer treats a working external version as incomplete after an interrupted install. (#11172 by @risu729)--no longer hijacks task argument completion after usage v5.mise run <task> -- <TAB>again offers the task's declared choices instead of falling back to filenames, while still forwarding extra arguments. (#11711 by @jdx)binsmetadata to pick the correct provider before falling back to incidental executables, fixing cases where invoking thenpmshim could run Node's bundled npm instead of the configured npm version. (#11666, #11671, #11676, #11677, #11678 by @jdx)New Contributors
Full Changelog: jdx/mise@v2026.8.1...v2026.8.2
💚 Sponsor mise
mise is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools. Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at jdx.dev. Individual and company sponsorships keep mise fast, free, and independent.
v2026.8.1: : Task Cache Goes Remote, Affected Tasks, and Config ErgonomicsCompare Source
This release rounds out mise's experimental task artifact cache with size/age limits, inspection tooling, and a full local-plus-remote cache backend (including authenticated CI caching), adds experimental
mise run --affectedfor monorepos, and lands a batch of config, upgrade, and install fixes.Highlights
mise run --affectedruns only the tasks in monorepo projects touched by your Git changes, using workspace dependency graphs, global task inputs, and provider lockfile attribution to decide what is affected.--fileand--pathare interchangeable across the commands that write config, so you no longer have to remember which name each subcommand expects.Added
task: experimental
mise run --affectedselects and runs only the tasks in projects affected by Git changes, combining the workspace dependency graph,global_inputs, and provider lockfile diffs. Base and head revisions can be overridden with--affected-base/--affected-headorMISE_AFFECTED_*. Includes JSON output and an--explainbreakdown of why each task was selected. (#11590, #11587, #11589, #11591, #11593 by @jdx)task: remote task cache. A composite store layers local and remote backends, reading local first and promoting remote hits, then committing locally before mirroring writes so a remote failure never loses a local hit. Requests are hardened, verified, streamed, and support read/write access modes. (#11622, #11623, #11624, #11626, #11627 by @jdx)
task: authenticated remote cache. Credentials resolve in fixed precedence: an explicit bearer token, a global-only token file (
MISE_TASK_CACHE_REMOTE_TOKEN_FILE), then GitHub Actions OIDC whenMISE_TASK_CACHE_REMOTE_OIDC_AUDIENCEis set. HTTPS is enforced except for loopback development endpoints. (#11625, #11653 by @jdx)task:
task.cache_max_sizeandtask.cache_max_agesettings cap the task output cache independently of the global prune age, evicting least-recently-accessed entries after writes and rejecting expired entries on restore. (#11610 by @jdx)task: inspect and selectively clear the cache with
mise cache task <task>(table or--json, reporting stored size, restorable bytes, saved time, last access, and outputs) andmise cache clear --task <task>, which removes only that task's entries without touching your working-tree outputs. (#11604 by @jdx)task:
mise run --task-cache-explain <task>prints a structural breakdown of what feeds a task's cache key (input categories, counts, env/var names and presence, platform) without emitting secret-derived hashes, and works under--dry-run. Companion changes report cache miss reasons, cache statistics, resolved cache paths, and add JSON explanation output. (#11595, #11597, #11599, #11600, #11601 by @jdx)task: cache artifacts are now checksum-verified and cache declarations are audited on load. (#11605, #11617 by @jdx)
config:
--fileand--pathare now interchangeable across the commands that write config:mise use,mise set,mise unuse,mise unset,mise config get, andmise config set. (#11577, #11616, #11631, #11640 by @JamBalaya56562)mise use --file mise.local.toml node@22 mise set --path mise.local.toml FOO=barupgrade:
mise upgrade --no-prunekeeps the version being replaced instead of uninstalling it, so external references such as virtualenvs built from a mise-managed Python keep working. Also works with--bump. (#11639 by @JamBalaya56562)env: on Windows, mise now warns when the generated PATH exceeds the ~8191-character length at which
cmd.exesilently drops the variable, which otherwise makes every command appear unrecognized. (#11643 by @JamBalaya56562)vfox: Lua plugins gain
strip_components = 1onarchiver.decompressplus sortedfile.list,file.glob, andfile.move, letting plugins flatten versioned archive roots and rename executables portably without shelling out. (#11652 by @jdx)Fixed
{{ exec(...) | split(pat=': ') | last }}and selectors resolved from templates no longer fail config loading. (#11580 by @JamBalaya56562)--path <dir>is given, and no longer write the global config into aconf.ddrop-in. (#11571, #11609, #11633 by @JamBalaya56562)mise upgrade --bumpnow applies every eligible tool bump in the same config file instead of letting the last save overwrite earlier ones, and preserves successful bumps when another tool in the file fails to install. (#11572 by @Marukome0743)latestpointing at the removed version; mise rebuilds valid symlinks (or removes dangling ones) after cleanup. (#11579 by @Marukome0743)watchman-diagzipapp) now relocate correctly with long Linuxbrew prefixes. (#11632 by @Marukome0743)Documentation
node.mirror_urlexample. (#11615, #11637 by @jdx; #11642 by @JamBalaya56562; #11377, #11460 by @Bartok9)Full Changelog: jdx/mise@v2026.8.0...v2026.8.1
💚 Sponsor mise
mise is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools. Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at jdx.dev. Individual and company sponsorships keep mise fast, free, and independent.
v2026.8.0: : 15% faster shims, multi-language workspaces, and precompiled RubyCompare Source
This release makes mise noticeably faster on Linux x64: shims have 15% lower latency, while config-aware commands are 8–11% faster in local release-to-release benchmarks. It also significantly expands the experimental monorepo task workflow with dependency inference across Cargo, uv (Python), Go, and Node workspaces, and makes precompiled Ruby binaries the default.
⚡ Performance: up to 15% lower latency
Official checksum-verified Linux x64 GNU binaries were compared on an AMD Ryzen 9 7950X3D using an isolated offline fixture with warm filesystem caches (20 warmups and 200 measured runs per command):
tasks lsenv -s bashcurrentsettings--helpversionregistryRelease downloads are smaller as well:
.tar.xz.tar.gz.tar.zstThe raw executable file is 2.5% larger because of the BOLT file layout, despite its smaller allocated sections and compressed artifacts. Shim dispatch was measured in two reversed-order 300-run rounds. These are whole-release results against v2026.7.18, so they include all changes between the releases rather than isolating BOLT alone.
Highlights
mise tasks graphdiscovers projects and internal dependency edges from Cargo, uv, Go, and Node workspace metadata without needing the underlying toolchain installed, and--explainattributes every project, edge, and task field to its source.Added
task: Cargo workspaces are now inferred for the task graph. mise parses root and member
Cargo.tomlfiles (nocargobinary required) to buildcargo:<package>projects and internal edges from normal, dev, build, target-specific, renamed, and inheritedworkspace = truepath dependencies, with provenance surfaced in graph output. (#11554 by @jdx)task: uv (Python) workspaces are inferred from
pyproject.toml. When[tool.uv.workspace]is present, member globs and exclusions defineuv:<package>projects and edges come from[tool.uv.sources]workspace = true/ localpathentries across main, optional, dependency-group, and legacy dev dependencies — again without invokinguvor Python. (#11556 by @jdx)task: Go workspaces are discovered from
go.workusedirectives and each module'sgo.mod, registering stablego:<module-path>projects without running thegobinary. Dependency ordering is supplied explicitly via[monorepo.projects]overrides. (#11559 by @jdx)task: workspace providers can now contribute task suggestions. The Node provider imports supported
inputs,outputs,cache, anddependsOnmetadata from matchingturbo.jsonentries for inferred package scripts, trackingturbo.jsonas a task definition source. Unsupported Turbo expressions are left unset. (#11543 by @jdx)task:
mise tasks graph --explainshows provider and metadata-source provenance for every inferred project, dependency edge, task, and provider-suggested field, and--jsonnow serializes the same attribution. Config overrides are labeled asconfigurationrather than misattributed to inference. (#11547 by @jdx)task:
mise watchgains a per-taskwatch.no_vcs_ignoreoption so tasks can watch sources that are excluded by.gitignore(such as generated files). VCS ignores stay enabled by default to avoid scanning broad build directories; one opted-in task enables it for the combined watch process. (#11535 by @Marukome0743)task: groundwork for affected-project task selection: mise can now resolve affected Git base/head revisions (with
MISE_AFFECTED_BASE/MISE_AFFECTED_HEADoverrides and CI auto-detection for GitHub Actions and GitLab), map changed files to the workspace projects that own them, and expand that set through transitive reverse-dependency edges across providers. (#11585, #11569, #11583 by @jdx)Changed
ruby.compileis unset — installs tryjdx/rubybinaries first and fall back to a source build when none are available. Setruby.compile = trueto force a source build as before. (#11584 by @jdx)Fixed
--path <dir>now targets a config file inside that directory foruse,unuse,set,unset,dotfiles add, and thesystemsubcommands. Previously--pathwas silently discarded when the current directory already had a config in scope, somise unuse --path ../othercould remove a tool from the wrong file. (#11575 by @JamBalaya56562)mise runstops starting new work, exits with status 130, and no longer printsno exit statusortask failed, while still allowing post-dependency cleanup to run. (#11511 by @Marukome0743)sourcesandoutputsnow support brace globs (e.g.{a,b}/**), and literal single-element braces are preserved rather than being mangled. (#11555, #11565 by @Marukome0743)mise run --tool python@3.12now honors the selected interpreter when creating a_.python.venv, instead of building the venv from the first[tools] pythonentry. (#11567 by @JamBalaya56562)mise unuse node@20onnode = ["20", "22"]now removes only the matching version and preserves the rest, including structured options and.tool-versionsentries. The whole tool key is removed only for an unversioned request or after the last version is unused. (#11563 by @Marukome0743)redact = falseon a variable now excludes it from matchingredactionspatterns, so a short opted-out value no longer leaks into the global scrubber and partially redacts unrelated secrets. (#11564 by @jdx)hook-envnow detects the drift and restores it, while leaving user-owned variables, added PATH entries, and PATH reordering untouched. (#11568 by @Marukome0743)symlink-eachno longer recursively walks shared targets like~for status, apply, and unapply. mise now records exact source-to-target pairs in a manifest under$MISE_STATE_DIR/dotfiles, avoiding traversal of unrelated and unreadable home-directory trees. Existing installs are backfilled on their next apply. (#11549 by @jdx)[tools].dependsare now on the PATH given tobin/downloadandbin/installscripts during the samemise install, fixing first-install failures where a dependency's executable was still missing.bin/installnow also fails when it installs nothing. (#11531 by @Marukome0743, #11553 by @JamBalaya56562)pre_installhook returns a sha1 or md5 checksum are now verified instead of panicking withnot implemented: sha1. (#11536 by @JamBalaya56562)terminate_process/postflight handling, covering current cask shapes such as Cloudflare WARP, TablePlus, Zoom, OrbStack, Surge, Plex Media Server, and Zed Preview. Homebrew-owned casks are left byte-for-byte untouched. (#11215 by @donbeave)fjmacOS key path is now supported. (#11545 by @jdx)gh/glabconfig is now found on Windows. (#11508 by @JamBalaya56562)Performance
Documentation
Registry
Full Changelog: jdx/mise@v2026.7.18...v2026.8.0
💚 Sponsor mise
mise is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools. Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at jdx.dev. Individual and company sponsorships keep mise fast, free, and independent.
AI-assisted — Tool: Codex; model: unavailable/unavailable; version: unavailable.
v2026.7.18: : Monorepo task ergonomics and a broad round of fixesCompare Source
This release refines mise's experimental monorepo task workflow with relative dependency paths and a compact dependency tree view, and lands a wide batch of fixes across Cargo installs, plugins, PATH handling, Windows program resolution, Aqua locks, GitLab pagination, and more.
Added
task:
mise tasks depsgains a--compactflag that expands each shared dependency subtree only once and marks later references as(already shown), keeping every incoming edge visible while avoiding the recursive blow-up that wildcard-heavy monorepo graphs produced. Default output is unchanged unless you pass the flag. (#11502 by @jdx)task: monorepo task dependencies now support
./-prefixed relative paths, resolved from the declaring task's own monorepo location, so one aggregate declaration works unchanged at the root, in nested apps, and in leaves without hard-coded absolute paths. Trailing...patterns now include the base project itself in addition to its descendants. (#11503 by @jdx)Fixed
features,default-features,bin,crate,locked) and reinstall automatically when any of them change, so changing feature flags or the selected binary no longer silently reuses the wrong artifact. Incompatible shared/system installs are shadowed in your primary install directory instead of being modified. (#11480 by @Marukome0743)[plugins]entries can now point at local filesystem paths (absolute,~/, or explicit.//../relative to the config root). Local asdf, vfox, vfox-backend, and package plugins are installed as symlinks so source edits take effect immediately, while Git URLs, refs, archives, andfile://sources keep their existing behavior. (#11487 by @Marukome0743)plugins install,plugins install --all, andplugins updatenow finish every plugin even when one fails, preserving successful changes and reporting all failures together (in deterministic order) with a failing exit status. (#11490 by @Marukome0743)mise env,mise xchild PATHs,mise doctor) now collapse exact duplicate PATH entries first-wins, fixing the runaway_.pathaccumulation that appeared in nested shells and IDE terminals that inherit an activated PATH without mise's state vars. The live shell PATH is intentionally left untouched. (#11491 by @JamBalaya56562)mise prune --toolsno longer discards references from untrusted idiomatic version files and plain.tool-versions, preventing removal of versions still in use by other projects. (#11501 by @jdx)idiomatic_version_file_enable_toolsset in a config root's own[settings]is now honored by monorepo-wide commands likemise ls --monorepoandmise install --monorepo, instead of only being applied when mise runs from inside that root. (#11463 by @kaii-zen)bin/list-allandbin/latest-stablescripts now receive your resolved mise[env]values, removals, and_.pathadditions, so plugins that need a credential or helper on PATH can list versions. Caches are partitioned per environment so results are never reused across differing configs. (#11492 by @Marukome0743)downloads.haskell.org) again retain prefix-scoped format and file metadata, so archives are extracted correctly rather than copied as the executable. (#11499 by @jdx)MISE_LIST_ALL_VERSIONSis set. (#11507 by @JamBalaya56562)program not founderrors when a tool is present only as a.cmdshim (for example a scoop- or pip-installedpipx.cmd). Interpreter-only files such as.ps1and.vbsare recognized correctly, with.vbsfile tasks routed throughcscript. (#11486, #11489 by @JamBalaya56562)mise watch --wrap-process groupis now honored on macOS instead of being silently dropped for watchexec's platform default ofsession. The--helptext also documents the platform-dependent defaults. (#11512 by @JamBalaya56562)Registry
witr. (#11505 by @Jelenkee)New Contributors
Full Changelog: jdx/mise@v2026.7.17...v2026.7.18
💚 Sponsor mise
mise is maintained by @jdx, an open source developer for entire.io, the title sponsor of the jdx.dev open source tools. Development is funded by sponsors.
If mise saves you or your team time, please consider sponsoring at jdx.dev. Individual and company sponsorships keep mise fast, free, and independent.
v2026.7.17: : Monorepo Task Inference and Root DefaultsCompare Source
This release builds out mise's experimental monorepo task story: Node workspaces now infer project dependency graphs, import package scripts as first-class tasks, and can share configuration through root task defaults and upstream (
^task) dependencies. It also adds per-tool control over idiomatic version files, a smoother dotfiles workflow, and a batch of fixes across shell activation, hook-env, Homebrew casks, Aqua, and Python uv environments.Highlights
package.jsonscripts asnode:<package>#<script>tasks, root task defaults shared by task name, and experimental^taskupstream dependencies for "build upstream projects first" ordering.optional = truetask dependencies run when they match and are silently skipped when they don't, and idiomatic version files can now be disabled per tool so.nvmrcandpackage.jsonno longer fight over your Node version.cdhook working during compound commands, and fixes zsh activation underPOSIX_IDENTIFIERS.Added
task: Node workspace packages now expose their
package.jsonscripts as mise tasks without needing amise.tomlin every package. Scripts get stable IDs likenode:@scope/app#buildplus monorepo path aliases such as//packages/app:build, run in their package root through the detected package manager (npm/pnpm/Yarn/Bun) with raw argument passthrough, and explicit tasks take precedence while keeping both names linked. (#11466 by @jdx)task: Node workspaces now infer project dependency edges by matching declared internal package names (
dependencies,devDependencies,optionalDependencies,peerDependencies) to other discovered packages, surfaced throughmise tasks graph. This is the graph that powers dependency-aware ordering. (#11435 by @jdx)task: experimental root task defaults via
[monorepo.task_defaults.<name>]in the rootmise.toml, applied by task name to both inferred and explicit workspace tasks. Task-local config andextendstemplates still win. (#11473 by @jdx)task: experimental
^taskupstream dependency syntax so a task can require the same task in every upstream workspace project before it runs, expanding through the project graph (including transitive upstreams) and skipping projects that lack the task. Supported independsonly. (#11476 by @jdx)task: optional dependencies via
optional = trueon structured task dependencies. Optional deps run all matches when present and are silently omitted when nothing matches, while invalid selectors still error. Works acrossdepends,depends_post, andwait_for. (#11471 by @jdx)config:
idiomatic_version_file_disable_fileslets you disable individual idiomatic version files per tool usingtool:filenamepairs, so you can keep.nvmrcselecting Node while ignoringpackage.jsondevEngines, with pnpm still readingpackage.json. (#11470 by @jdx)dotfiles:
mise bootstrap dotfiles addnow applies captured entries by default (use--no-applyfor capture-only workflows), moves real paths into the dotfiles source before linking, normalizes and sorts[dotfiles]entries, and reports config writes and concrete apply actions, with rollback on failure. (#11451 by @jdx)Fixed
env._.sourceand full config reloads to re-run on every prompt indefinitely. Forced fast-path runs now always refresh the session. (#11458 by @Marukome0743)cdin a compound command applies the matching mise environment immediately, matching Bash and Zsh behavior. (#11478 by @Marukome0743)POSIX_IDENTIFIERSenabled;MISE_*changes are captured correctly instead of hitting abad math expressionerror. (#11467 by @jdx)command_wrapperartifacts and structuredrunlifecycleConfiguration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.